package xin.codedream.codelog.dao;

import org.apache.ibatis.annotations.Param;
import xin.codedream.codelog.model.entity.Tag;

import java.util.List;

/**
 * 标签数据访问层
 *
 * @author NGLSL
 * @date 2018/8/13
 */
public interface TagDao {
    /**
     * 获取所有标签
     *
     * @return List<Tags>
     */
    List<Tag> listAllTags();

    /**
     * 通过标签名称查询标签信息
     *
     * @param tagName 标签名称
     * @return Tags
     */
    Tag selectTagByName(@Param("tagName") String tagName);

    /**
     * 保存标签
     *
     * @param tag 标签信息
     * @return int
     */
    int insertTag(Tag tag);

    /**
     * 通过标签Id查询标签信息
     *
     * @param tagId 标签ID
     * @return Tag
     */
    Tag selectTagInfoByTagId(@Param(value = "tagId") Long tagId);

    /**
     * 通过标签Id删除标签
     *
     * @param tagId 标签ID
     * @return int
     */
    int deleteTagByTagId(@Param(value = "tagId") Long tagId);

    /**
     * 通过标签Id删除文章相关联的标签
     *
     * @param tagId 标签ID
     * @return int
     */
    int deleteArticleTagByTagId(@Param(value = "tagId") Long tagId);

    /**
     * 通过标签Id，统计文章标签关联数量
     *
     * @param tagId 标签Id
     * @return int
     */
    int countArticleTagByTagId(@Param(value = "tagId") Long tagId);
}
